package com.topnav.mc.config;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.text.impl.DefaultTextCreator;
import com.google.code.kaptcha.util.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * @Author: kenny
 * @Date: 2024/1/5 14:53
 */
//验证码生成器配置类
@Configuration
@EnableConfigurationProperties(KaptchaProps.class)  //使KaptchaProps类生效
public class KaptchaConfig {
    @Autowired
    private KaptchaProps kaptchaProps;

    @Bean
    public DefaultKaptcha getDefaultKaptcha(){
        DefaultKaptcha defaultKaptcha=new DefaultKaptcha();
        Properties prop=new Properties();
        //是否有边框，默认true，可自行设置yes/no
        prop.setProperty(Constants.KAPTCHA_BORDER,"no");
        //边框颜色，默认为black
        prop.setProperty(Constants.KAPTCHA_BORDER_COLOR,"BLACK");
        //验证码图片的宽度,默认200
        prop.setProperty(Constants.KAPTCHA_IMAGE_WIDTH,kaptchaProps.getImageWidth());
        //验证码图片的高度,默认50
        prop.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT,kaptchaProps.getImageHeight());
        //文本字符间距,默认2
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"3");
        //文本字符大小，默认40
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, kaptchaProps.getFontSize());
        //验证码长度,默认5
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH,"5");
        //字体,默认Arial, Courier
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES,"宋体,楷体,微软雅黑");
        //设置干扰线颜色
        prop.setProperty(Constants.KAPTCHA_NOISE_COLOR,kaptchaProps.getNoiseColor());
        //设置文本实现类（如果使用默认的则不需要设置，我这里是用了自定义的 加减计算）
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_IMPL,"com.test.lyy.common.imp.CalculationTextCreator");
        Config config=new Config(prop);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }

}
